﻿@model IEnumerable<Mindfor.Web.Data.Page>
@{
	PageTitle.AddViewTitle("Страницы");
	bool isAdmin = ViewData.Eval<bool>("IsAdmin", false);
}
		   
@section head {
	<style type="text/css">
		.l
		{
			background-color: inherit;
		}
	</style>
	<script type="text/javascript">
		$().ready(function () {
			$("#PagesTable a.moveDown, #PagesTable a.moveUp").live("click", function () {
				var sender = $(this);
				var tr = sender.parents("tr:first");
				var table = tr.parents("table:first");
				var level = parseInt(tr.attr("class").substr("level".length));
				var levelCls = ".level" + level;

				var levelCurrent = level;
				var levelUpCls = "";
				while (levelCurrent >= 0) {
					if (levelUpCls != "")
						levelUpCls += ", ";
					levelUpCls += ".level" + levelCurrent;
					levelCurrent--;
				}

				var url = sender.attr("href");
				table.block();
				$.get(url, null, function () {
					table.unblock();

					var moveDown = sender.hasClass("moveDown");
					if (moveDown) {
						var trNext = tr.nextAll(levelCls + ":first");
						var trNextChildren = trNext.nextUntil(levelUpCls);
						trNext.insertBefore(tr);
						trNextChildren.insertBefore(tr);
					}
					else {
						var trChildren = tr.nextUntil(levelUpCls);
						var trPrev = tr.prevAll(levelCls + ":first");
						tr.insertBefore(trPrev);
						trChildren.insertBefore(trPrev);
					}
				});
				return false;
			});
		});
	</script>
}

<div class="toolbar">
	<a href="@Url.Action("Add")" class="button">
		<img src="/Content/Icons/Add.png" alt="" />&nbsp;Добавить страницу
	</a>
</div>
<table id="PagesTable" class="tbl" style="width:100%">
	<tr>
		<th class="min"></th>
		<th class="min"></th>
		<th>Путь</th>
		<th class="min">Доступ</th>
		<th class="min">Меню</th>
		<th class="min">В новом окне</th>
		@if (isAdmin) {
			<th class="min">Action</th>
		}
	</tr>
	@foreach (Mindfor.Web.Data.Page page in Model)
	{
		int child = page.ChildPages.Count();
		int level = 0;
		Mindfor.Web.Data.Page parent = page.Parent;
		while (parent != null)
		{
			level++;
			parent = parent.Parent;
		}

		string fullPath = "/" + page.GetPath();
		int pagePathIndex = fullPath.LastIndexOf('/') + 1;
		string pagePath = fullPath.Substring(pagePathIndex);
		string parentPath = fullPath.Substring(0, pagePathIndex);

		string[] actionAllowRoles = null;
		if (page.ActionPath != null)
		{
			actionAllowRoles = page.ActionPath.GetActionAllowRoles();
		}

	 	<tr class="level@(level)">
			<td class="min left nowrap">
				<a class="button" title="Изменить" href="@Url.Action("Edit", new { id = page.Id })"><img src="/Content/Icons/Edit.png" alt="Изменить" width="16px"/></a>
				@if (isAdmin || page.ActionPath.IsEmpty()) {
					<a class="button" title="Удалить" href="@Url.Action("Delete", new { id = page.Id })" onclick="return confirm('При удалении страницы будут также удалены все ее подстраницы. Удалить страницу?');">
						<img src="/Content/Icons/Delete.png" alt="Удалить" width="16px"/>
					</a>
				}
			</td>
			<td class="min center nowrap">
				<a class="button moveUp" title="Переместить элемент выше в списке" href="@Url.Action("MoveUp", new { id = page.Id })">
					<img src="/Content/Icons/ArrowUp.png" alt="Выше" />
				</a>
				<a class="button moveDown" title="Переместить элемент ниже в списке" href="@Url.Action("MoveDown", new { id = page.Id })">
					<img src="/Content/Icons/ArrowDown.png" alt="Ниже" />
				</a>
			</td>
			<td>
				<a href="@Url.Page(page.Id)" target="_blank" title="Открыть в отдельном окне">@parentPath<b>@pagePath</b></a>
			</td>
			<td class="min center@(actionAllowRoles == null ? "" : " disabled")">
				@if (actionAllowRoles == null) {
					if (page.AllowAnonymous) {
						<img src="/Content/Icons/User.png" alt="Неавторизованные" title="Доступен неавторизованным пользователями" />
					}
					if (page.AllowAuthorized) {
						<img src="/Content/Icons/Key.png" alt="Авторизованные"  title="Доступен авторизованным пользователями" />
						foreach (Role role in page.AllowRoles) {
							<br/>@role.Name
						}
					}
				}
				else {
					<img src="/Content/Icons/Key.png" alt="Авторизованные"  title="Доступен авторизованным пользователями" />
					foreach (string role in actionAllowRoles) {
						<br/>@role
					}
				}
			</td>
			<td class="min center">
				@if (page.ShowInMenu) {
					<img src="/Content/Icons/Tick.png" alt="Да" />
				}
			</td>
			<td class="min center">
				@if (page.OpenInNewWindow) {
					<img src="/Content/Icons/Tick.png" alt="Да" />
				}
			</td>
			@if (isAdmin) {
				<td class="min center">@(page.ActionPath == null ? "" : page.ActionPath.ToString())</td>
			}
		</tr>
	}
</table>